篇首语:本文由编程笔记#小编为大家整理,主要介绍了操作系统与安全考点总结相关的知识,希望对你有一定的参考价值。
复习课1回放 1:52:45开始
复习课2回放 1:16:50开始有画面
所有材料PDF版
【U2P75】进程控制块的作用是什么?它主要包括哪几部分内容?
【U4】简述页式虚拟存储管理的基本原理,并画出段页式虚存管理中逻辑地址到实际物理地址的转换过程图。
分页虚拟存储管理方式是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的虚拟存储器系统。在进程装入主存时,并不是装入全部页面,而是装入若干页(一个或零个页面),之后根据进程运行的需要,动态装入其他页面:当主存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便腾出空间,装入新的页面。
书P234
书P208
书P214
【U4P215】简述分页和分段的区别。
【U2P105】简述时间片轮转调度算法的基本思想。
【U7P360】解释可信计算基。
【U4】简述实现虚拟存储器的基本原理。【老师说与上面的简答重复,删除了】
【U2P61】简述中断处理的一般流程。【老师说这是一个重点】
【U3P162】简述死锁的概念及其四个必要条件。
【U7P369】简述沙盒技术。
【U1P24-25】什么是系统调用?简述API、库函数及系统调用之间的关系及区别。
操作系统的功能通过一组称为系统调用(system call)的接口呈现给用户,内核提供一系列实现预定功能的内核函数,系统调用把应用程序的请求传达给内核,内核调用对应的内核函数完成请求所需处理后,再将处理结果返回给应用程序。
【关于“API、库函数及系统调用之间的关系及区别”,我找了好多版参考答案,不知道哪个河里…】
【来源网络】API是由同名的封装把系统调用封装成应用程序能够直接使用的应用接口。所以,一个库函数就是一种API,一个API的实现可能会用到一个系统调用或多个系统调用,也可能若干API封装相同的系统调用,即使完全不使用系统调用,也不存在任何问题。
库函数是语言本身的一部分,可以调用多个系统调用;系统调用(函数)是内核提供给应用程序的接口,属于系统的一部分,可以认为是某种内核的库函数;操作系统API是有系统调用(函数)的集合(也就是将许多的系统调用封装在了一起)。
【来源课本】从应用程序角度来看,库函数与系统调用之间是没有差别的,用户关心的是函数名、参数类型及个数、返回码含义。但从系统实现角度来看,两者之间存在重大区别。使用库函数的好处是可以隐藏访管指令的细节,使得系统调用更像函数调用,对用户隐蔽系统调用实现细节,这样在改动内核时不会影响应用程序的正确性。但是库函数属于应用程序,在用户态运行,系统调用对应的服务例程属于系统程序,在内核态运行,如果需要的话,用户可以替换库函数,通常却不能替换系统调用。
【U3,课本没有,摘抄自PPTU3-P42】简述记录型信号量的P、V操作的定义。
在整型信号量机制中的P操作,只要是信号量S≤0, 就会不断地测试。因此,该机制并未遵循“让权等待”的准则, 而是使进程处于“忙等”的状态。
记录型信号量机制,则是一种不存在“忙等”现象的进程同步机制。但在采取了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的情况。为此,在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。
记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:
typedef struct
int value;
list of process *L;
semaphore;
void P(static semaphore s)
s.value--;
if (s.value<0) sleep(s.L);
void V(static semaphore s)
s.value++;
if (s.value≤0) wackup(s.L);
【U3】简述进程同步的主要任务和应遵循的原则。
【U7P383-384】什么是明文、密文与密钥,简述对称算法与公开密钥算法。
对一个将页表放在内存中的分页系统:
如果访问内存需要0.2μs,有效访问时间为多少?
如果增加一个快表,且假定在快表中找到页表项的几率高达90%,则有效访问时间又是多少(假设查找快表需花的时间为0)?
有一个仓库,可以存放A和B两种产品,但要求:【曾经有一年考过,PC问题变型】
1)每次只能存入一种产品(A或B);
2)-N 试用同步算法描述A产品与B产品的入库过程
条件2 ==> A产品的数量不能比B产品的数量少N个以上,A产品的数量不能比B产品的数量多M个以上。可以设置两个信号量来控制A、B产品的存放数量:
sa表示当前允许A产品比B产品多入库的数量,即在当前库存量和B产品不入库的情况下,还可以允许sa个A产品入库;初始时,若不放B而仅放A产品,则sa最多为M-1【没有等号,所以-1】个。
sb表示当前允许B产品比A产品多入库的数量,即在当前库存量和A产品不入库的情况下,还可以允许sb个Y产品入库;初始时,若不放B而仅放A产品,则sb最多为N-1个。
当往库中存放入一个A产品时,则允许存入B产品的数量也增加1,故信号量sb应加1;当往库中存放入一个B产品时,则允许存入A产品的数量也增加1,故信号量sa应加1。
设置信号量sa表示当前允许A产品比B产品多入库的数量,信号量sb表示当前允许B产品比A产品多入库的数量。
semaphore mutex=1,sa=M-1,sb=N-1;
process puta()
while(1)
取一个产品;
P(sa); //先资源后互斥!
P(mutex);
将产品入库;
V(mutex);
V(sb);
process putb()
while(1)
取一个产品;
P(sb);
P(mutex);
将产品入库;
V(mutex);
V(sa);
main()
cobegin
puta();
putb();
设系统中有3种类型的资源A、B、C和5个进程P0、P1、P2、P3、P4,A资源的数量为10,B资源的数量为5,C资源的数量为7。在T0时刻系统状态如表1所示。系统采用银行家算法实施死锁避免策略。
表1
【这道题情况很全,考试就考2~3种情况,且下方的答案未给表格,考试要求画出表格】
一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人,过河的人只能沿着敲向前走不能向后退。过河时,只要对岸无人过,就可以过。但不允许河对岸的两个人同时过,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。
信号量s实现两个方向的互斥,scount实现同方向N个桥墩最多能同时过N个人的控制,scount1、scount2是修改计数器count1、count2的互斥信号量。
semaphore s=scount1=scount2=1,scount=N;
int count1=count2=0;
void direct1(int i)
P(scount1);
if(count1==0) P(s);
count1++;
V(scount1);
P(scount);
上桥,过桥,下桥;
V(scount);
P(scount1);
count1--;
if(count1==0) V(s);
V(scount1);
void direct2(int i)
P(scount2);
if(count2==0) P(s);
count2++;
V(scount2);
P(scount);
上桥,过桥,下桥;
V(scount);
P(scount2);
count2--;
if(count2==0) V(s);
V(scount2);
main()
cobegin()
direct1(1);
...
direct1(n);
direct2(1);
...
direct2(n);
设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。若某进程最多需要6页数据存储空间,页的大小为1KB。操作系统采用固定分配局部置换策略为此进程分配4个物理块,如表1所示。当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据,请回答下列问题。
页号 | 物理块号 | 装入时刻 | 访问位 |
---|---|---|---|
0 | 7 | 130 | 1 |
1 | 4 | 230 | 1 |
2 | 2 | 200 | 1 |
3 | 9 | 160 | 1 |
该逻辑地址对应的页号是多少?
若采用先进先出置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。
若采用简单Clock置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。(设搜索下一页的指针沿顺时针方向移动,且当前指向2号物理块,如下图所示)
考虑三个吸烟者进程和一个经销商进程的系统。每个吸烟者连续不断地做烟卷并抽他做好的烟卷,做一支烟卷需要烟草、纸和火柴三种原料。这三个吸烟者分别掌握有烟草、纸和火柴。经销商源源不断地提供上述三种原料,但他只将其中的两种原料放在桌上,具有另一种原料的吸烟者就可以做烟卷并抽烟,且在做完后给经销商发信号,然后经销商再拿出两种原料放在桌上,如此反复。试设计一个同步算法来描述他们的活动。
设smokerA拥有烟草,需要纸和火柴,设纸和火柴为信号量A;设smokerB拥有纸,需要烟草和火柴,设烟草和火柴为信号量B;设smokerC拥有火柴,需要烟草和纸,设烟草和纸为信号量C;
设provider提供原材料的信号为D;
semaphore A=B=C=0,D=1;
int i;
void smokerA()
while(1)
P(A);
......smoking;
V(D);
void smokerB()
while(1)
P(B);
......smoking;
V(D);
void smokerC()
while(1)
P(C);
......smoking;
V(D);
void provider()
while(1)
P(D);
i=random(2);
switch(i)
case'0': V(A);
case'1': V(B);
case'2': V(C);
在一个请求分页存储管理系统中,一个程序的页面访问序列为4,3,2,1,4,3,4,5,3,2,1,5。【要写过程表格,不能只给出答案】
采用LRU页面置换算法,设配给该程序的页框数为3,并且初始时程序没有装入任何页面,试求在访问过程中发生缺页中断的次数和缺页率。(5分)
采用工作集置换算法,设Δ=2,并且在时刻t=0时,初始工作集为(3,4),其中,4号页面在t=0时被引用,3号页面在t=-1时被引用,试求在访问过程中发生的缺页中断次数和缺页率。(5分)
【补2班】是旁听了一点点2班重点
考简答
餐厅点餐问题【与嗜睡理发师类似,强调时序控制】
一个快餐厅有4类职员:①领班:接受顾客点菜;②厨师:准备顾客的饭菜;③打包工:将做好的饭菜打包;④出纳员:收款并提交食品。每个职员可被看作一个进程,试用一种同步机制写出能让四类职员正确并发运行的程序。
semaphore S1=1,S2=S3=S4=0;
cobegin
LB();
CS();
DBG();
CNY();
coend
LB()
while(1)
顾客到达;
P(S1);
接受顾客点菜;
V(S2);
CS()
while(1)
P(S2);
准备顾客的饭菜;
V(S3);
DBG()
while(1)
P(S3);
准备顾客的饭菜;
V(S4);
CNY()
while(1)
P(S4);
收款并提交食品;
V(S1);
吸烟者
苹果橘子
桥墩过河
死锁避免:P184/23、24(解题过程按照P166例题)